const { preUnBind, postUnBind } = require('../../lib/utils/relate');
const { LOG_TYPE, dbCmd } = require('../../common/constants');
const { getQQPlatform } = require('../../lib/utils/qq');

/**
 * 解绑QQ
 * @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#unbind-qq
 * @returns
 */
module.exports = async function () {
    const { uid } = this.authInfo;
    const { appId } = this.getUniversalClientInfo();
    const qqPlatform = getQQPlatform.call(this);

    await preUnBind.call(this, {
        uid,
        unBindAccount: {
            qq_openid: dbCmd.or([
                {
                    [qqPlatform]: dbCmd.exists(true),
                },
                {
                    [`${qqPlatform}_${appId}`]: dbCmd.exists(true),
                },
            ]),
            qq_unionid: dbCmd.exists(true),
        },
        logType: LOG_TYPE.UNBIND_QQ,
    });

    return await postUnBind.call(this, {
        uid,
        unBindAccount: {
            qq_openid: dbCmd.remove(),
            qq_unionid: dbCmd.remove(),
        },
        logType: LOG_TYPE.UNBIND_QQ,
    });
};
